<?php
/**
 * Ly - 系统模块类
 *
 * 提供Assign，Display等方法，是所有实际模块的父类
 *
 * Copyright (c) 2013 YinHailin All rights reserved.
 * @Author: YinHailin
 * @Authorize: Boren Network
 * @Created by YinHailin at 2013-11-01
 */

defined('LY_VERSION') or exit();

abstract class ModuleCore {

  /* 模板变量 */
  private $TempVar = array();

  /* 视图实例 */
  protected $View = null;

  /* 初始化视图 */
  protected function InitView() {
    //实例化视图
    if (!is_object($this->View)) $this->View = LyCore::Instance('ViewCore');
    //传递变量
    if ($this->TempVar) $this->View->Assign($this->TempVar);
  }

  /*
   * 模板变量赋值
   * @param string|array $name 要赋值的变量
   * @param string $value 变量的值
   */
  public function Assign($name, $value = '') {
    if (is_array($name)) {
      $this->TempVar = array_merge($this->TempVar, $name);
    } else {
      $this->TempVar[$name] = $value;
    }
  }

  /*
   * 解析模板并输出
   * @param string|array $templateFile 模板文件
   */
  public function Display($templateFile = '') {
    $this->InitView();
    $this->View->Display($templateFile);
  }

  /*
   * 解析模板，获取但不输出
   * @param string|array $templateFile 模板文件
   * @return string
   */
  public function Fetch($templateFile = '') {
    $this->InitView();
    return $this->View->Fetch($templateFile);
  }

  /*
   * 插件专用解析模板，获取但不输出
   * @param string|array $templateFile 模板文件
   * @return string
   */
  public function Plugin($templateFile = '') {
    $this->InitView();
    //return $this->View->Plugin($templateFile);
  }

  /*
   * 跳转方法
   * @param string $message 提示信息
   * @param integer $status 状态 1为成功（默认） 0为失败
   * @param string $jumpUrl 跳转地址
   * @param mixed $wait 跳转等待时间
   */
  private function _Jump($message, $status = 1, $jumpUrl = '', $wait = '') {
    if (is_int($wait)) $this->Assign('waitSecond', $wait);
    if (!empty($jumpUrl)) $this->Assign('jumpUrl', $jumpUrl);
    // 提示标题
    $this->Assign('msgTitle', $status ? C('OPERATION_SUCCESS') : C('OPERATION_FAIL'));
    $this->Assign('status', $status);
    if ($status) {
      //发送成功信息
      $this->Assign('message', $message);// 提示信息
      //成功操作后默认停留1秒
      if (!is_int($wait)) $this->Assign('waitSecond', '1');
      //默认操作成功自动返回操作前页面
      if (empty($jumpUrl)) $this->Assign("jumpUrl", $_SERVER["HTTP_REFERER"]);
      $this->Display(C('TEMP_ACTION_SUCCESS'));
    } else {
      //发送失败消息
      $this->Assign('error', $message);// 提示信息
      //发生错误时候默认停留3秒
      if (!is_int($wait)) $this->Assign('waitSecond', '3');
      //默认发生错误的自动返回上页
      if (empty($jumpUrl)) $this->Assign('jumpUrl', "javascript:history.back(-1);");
      $this->Display(C('TEMP_ACTION_ERROR'));
      //中止执行  避免出错后继续执行
      exit;
    }
  }

  /*
   * 成功操作跳转
   * @param string $message 提示信息
   * @param string $jumpUrl 跳转地址
   * @param mixed $wait 跳转等待时间
   */
  protected function Success($message, $jumpUrl = '', $wait = '') {
    $this->_Jump($message, 1, $jumpUrl, $wait);
  }

  /*
   * 失败操作跳转
   * @param string $message 提示信息
   * @param string $jumpUrl 跳转地址
   * @param mixed $wait 跳转等待时间
   */
  protected function Error($message, $jumpUrl = '', $wait = '') {
    $this->_Jump($message, 0, $jumpUrl, $wait);
  }
}